package servicios;

import java.net.URI;

import javax.ws.rs.Consumes;
import javax.ws.rs.DefaultValue;
import javax.ws.rs.FormParam;
import javax.ws.rs.GET;
import javax.ws.rs.HeaderParam;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.EntityTag;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Request;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.UriBuilder;
import javax.ws.rs.core.UriInfo;
import javax.ws.rs.core.Response.ResponseBuilder;
import javax.ws.rs.core.Response.Status;

import persistencia.BaseDatos;

@Path("clientes")
public class FacturacionREST {
    @Context
    private UriInfo uriInfo;

    public FacturacionREST() {
	super();
    }

    @GET
    @Produces(MediaType.APPLICATION_XML)
    public Response agenda(@Context Request request,
	    @HeaderParam("Accept") String header) {
	EntityTag tag = new EntityTag(BaseDatos.DATOS.hashCode() + "");
	ResponseBuilder responseBuilder = request.evaluatePreconditions(tag);
	if (responseBuilder != null)
	    return responseBuilder.build();
	return Response.ok(BaseDatos.DATOS.getClientes()).tag(tag).build();
    }

/*    @POST
    @Consumes(MediaType.APPLICATION_FORM_URLENCODED)
    public Response nuevaEntradaDesdeFormulario(
	    @FormParam("nombre") String nombre,
	    @FormParam("apellidos") @DefaultValue("") String apellidos,
	    @FormParam("nif") String nif, @FormParam("tipovia") String tipoVia,
	    @FormParam("nombreCalle") String nombreCalle,
	    @FormParam("codPostal") int codPostal,
	    @FormParam("patio") String patio, @FormParam("piso") String piso,
	    @FormParam("puerta") String puerta,
	    @FormParam("tipotarifa") String tipoTarifa) {
	if (BaseDatos.DATOS.getCliente(nif) == BaseDatos.CLIENTE_NULL) {
//	    if ("".equals(apellidos)) {
//
//		BaseDatos.DATOS.nuevaEmpresa(nombre, nif, BaseDatos.DATOS
//			.nuevaDireccion((TipoVia)tipoVia, nombreCalle, codPostal,
//				patio, piso, puerta), tipoTarifa);
//	    } else {
//		BaseDatos.DATOS.nuevaPersona(nombre, apellidos, nif);
//		UriBuilder uriBuilder = uriInfo.getAbsolutePathBuilder();
//		URI uri = uriBuilder.path(nif).build();
//		// System.out.println(uri.toString());
//		return Response.created(uri).build();
//	    }
	} else {
	    return Response.status(Status.CONFLICT).build();
	}
    }*/

}
